home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.31-14 / scripts / gfp-translate < prev    next >
Text File  |  2009-09-09  |  2KB  |  82 lines

  1. #!/bin/bash
  2. # Translate the bits making up a GFP mask
  3. # (c) 2009, Mel Gorman <mel@csn.ul.ie>
  4. # Licensed under the terms of the GNU GPL License version 2
  5. SOURCE=
  6. GFPMASK=none
  7.  
  8. # Helper function to report failures and exit
  9. die() {
  10.     echo ERROR: $@
  11.     if [ "$TMPFILE" != "" ]; then
  12.         rm -f $TMPFILE
  13.     fi
  14.     exit -1
  15. }
  16.  
  17. usage() {
  18.     echo "usage: gfp-translate [-h] [ --source DIRECTORY ] gfpmask"
  19.     exit 0
  20. }
  21.  
  22. # Parse command-line arguements
  23. while [ $# -gt 0 ]; do
  24.     case $1 in
  25.         --source)
  26.             SOURCE=$2
  27.             shift 2
  28.             ;;
  29.         -h)
  30.             usage
  31.             ;;
  32.         --help)
  33.             usage
  34.             ;;
  35.         *)
  36.             GFPMASK=$1
  37.             shift
  38.             ;;
  39.     esac
  40. done
  41.  
  42. # Guess the kernel source directory if it's not set. Preference is in order of
  43. # o current directory
  44. # o /usr/src/linux
  45. if [ "$SOURCE" = "" ]; then
  46.     if [ -r "/usr/src/linux/Makefile" ]; then
  47.         SOURCE=/usr/src/linux
  48.     fi
  49.     if [ -r "`pwd`/Makefile" ]; then
  50.         SOURCE=`pwd`
  51.     fi
  52. fi
  53.  
  54. # Confirm that a source directory exists
  55. if [ ! -r "$SOURCE/Makefile" ]; then
  56.     die "Could not locate kernel source directory or it is invalid"
  57. fi
  58.  
  59. # Confirm that a GFP mask has been specified
  60. if [ "$GFPMASK" = "none" ]; then
  61.     usage
  62. fi
  63.  
  64. # Extract GFP flags from the kernel source
  65. TMPFILE=`mktemp -t gfptranslate-XXXXXX` || exit 1
  66. grep "^#define __GFP" $SOURCE/include/linux/gfp.h | sed -e 's/(__force gfp_t)//' | sed -e 's/u)/)/' | grep -v GFP_BITS | sed -e 's/)\//) \//' > $TMPFILE
  67.  
  68. # Parse the flags
  69. IFS="
  70. "
  71. echo Source: $SOURCE
  72. echo Parsing: $GFPMASK
  73. for LINE in `cat $TMPFILE`; do
  74.     MASK=`echo $LINE | awk '{print $3}'`
  75.     if [ $(($GFPMASK&$MASK)) -ne 0 ]; then
  76.         echo $LINE
  77.     fi
  78. done
  79.  
  80. rm -f $TMPFILE
  81. exit 0
  82.